Cryptography can provide security services in a number of processor-based devices, such as computers, smart cards, personal data assistants (PDAs), and the like. Security services include user identification and authentication, access control, financial transactions, and other applications where high security is preferred or required. Cryptography provides data privacy by encrypting data, and provides data integrity by recognizing if data has been manipulated in an unauthorized way. By attaching a unique identifier to original data, cryptography also ensures data uniqueness by verifying that data is the original instead of a copy of the original.
One type of cryptography known as symmetric-key cryptography involves using the same or a substantially similar key or keys, also known as a secret key, for both encryption and decryption. The secret key represents a shared secret between two or more parties for securely transmitting and receiving private information over potentially insecure channels. For example, after the transmitting and receiving parties secretly agree on a secret key, the transmitting party encrypts data using the secret key and transmits the encrypted data over a network. The receiving party receives the encrypted data over the network and decrypts the encrypted data using the secret key. Although an eavesdropper with access to the network can access the encrypted data, the eavesdropper presumably does not have access to the secret key and therefore cannot easily decrypt the encrypted data.
When implementing symmetric-key cryptography between two or more parties, the parties typically agree on one or more secret keys in a secure environment before transmitting the encrypted data. Secret keys can be changed periodically to increase security of the encrypted data. The highest security can generally be achieved by generating a unique secret key for each transmission of encrypted data.
Secret keys are typically generated by a processor-based device that executes a suitable key generation algorithm. Once the secret keys are generated, they are stored in a memory that can be accessed by the parties that use the secret keys to encrypt and decrypt the data. If the memory is not sufficiently secure, it is possible that the encrypted data could be compromised.
For these and other reasons, there is a need for the present invention.